﻿using System.Collections.Generic;

namespace Sidvall.Web
{
	public class ItemMappingCollection : System.Collections.ObjectModel.KeyedCollection<string, ItemMapping>
	{
		public void Add(string item, params string[] mappedItems)
		{
			var itemMapping = new ItemMapping()
			{
				Item = item,
			};
			if (mappedItems != null)
			{
				foreach (var mappedItem in mappedItems)
					itemMapping.MappedItems.Add(mappedItem);
			}
			Add(itemMapping);
		}
		public IEnumerable<string> GetItems(string item)
		{
			if (string.IsNullOrWhiteSpace(item))
				return null;
			var itemMapping = FindItemMapping(item);
			if (itemMapping != null)
				return itemMapping.MappedItems;
			return new List<string>(new string[] { item });
		}
		public ItemMapping FindItemMapping(string item)
		{
			if (string.IsNullOrWhiteSpace(item))
				return null;
			if (Contains(item))
				return this[item];
			return null;
		}
		protected override string GetKeyForItem(ItemMapping item)
		{
			if (item == null)
				throw new System.ArgumentNullException("item");
			return item.Item;
		}
	}
}
